package com.xdtech.hotel.service;

import java.util.List;
import java.util.Map;

import com.xdtech.common.service.IBaseService;
import com.xdtech.hotel.model.RoomConfig;
import com.xdtech.hotel.vo.RoomConfigItem;

/**
 * 
 * @author max.zheng
 * @create 2015-04-04 11:42:14
 * @since 1.0
 * @see
 */
public interface RoomConfigService extends IBaseService<RoomConfig>{

	/**
	 * 保存更新信息
	 * @author max.zheng
	 * @create 2015-04-04 11:42:14
	 * @modified by
	 * @param item
	 * @return
	 */
	boolean saveOrUpdateRoomConfig(RoomConfigItem item);

	/**
	 * 加载记录信息
	 * @author max.zheng
	 * @create 2015-04-04 11:42:14
	 * @modified by
	 * @param newId
	 * @return
	 */
	RoomConfigItem loadRoomConfigItem(Long roomConfigId);

	/**
	 * 根据id号删除记录信息
	 * @author max.zheng
	 * @create 2015-04-04 11:42:14
	 * @modified by
	 * @param id
	 * @return
	 */
	boolean deleteRoomConfigInfo(long id);

	/**
	 * 
	 * @author max.zheng
	 * @create 2015-04-04 11:42:14
	 * @modified by
	 * @param roomConfigIds
	 */
	boolean deleteRoomConfigInfo(List<Long> roomConfigIds);

	/**
	 * 保存根据房间类型配置的房间相关元件信息，单做配置模版使用
	 * @author max.zheng
	 * @create 2015-4-5下午8:08:10
	 * @modified by
	 * @param roomConfigItem
	 */
	void saveRoomConfigInfos(RoomConfigItem roomConfigItem);

	/**
	 * 根据客房配置id，加载未选中的元件列表
	 * @author max.zheng
	 * @create 2015-4-5下午8:29:54
	 * @modified by
	 * @param roomType
	 * @return
	 */
	Map<String, Object> loadRoomConfigUnSelectDeviceLinks(String roomType);

	/**
	 * 根据客房配置id，加载选中的元件列表
	 * @author max.zheng
	 * @create 2015-4-5下午8:30:57
	 * @modified by
	 * @param roomType
	 * @return
	 */
	Map<String, Object> loadRoomConfigSelectDeviceLinks(String roomType);

	/**
	 * 检测是否包含已配置的房间类型
	 * @author max.zheng
	 * @create 2015-4-5下午10:13:35
	 * @modified by
	 * @param roomType
	 */
	RoomConfig getRoomConfigByRoomType(Long roomConfigId,String roomType);

	/**
	 * 保存配置的房间类型信息
	 * @author max.zheng
	 * @create 2015-6-22下午2:10:30
	 * @modified by
	 * @param roomConfigItem
	 */
	void saveRoomConfigInfoWithLinks(RoomConfigItem roomConfigItem);
}
